1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | VisuElems.g_ClientManager.BeginIteration(); IF pClient^.GlobalData.ClientType = VisuElems.Visu_ClientType.WebVisualization THEN _VisuFbClientTagDataHelper(pClientData := pClient); i := STRING_TO_UINT(_VisuFbClientTagDataHelper.stName); IF i > 0 AND i <= FR_NUM THEN u := i; VisuElems.CURRENTVISU := DEF_VIZU; END_IF END_IF END_WHILE FOR i := 1 TO Freq_Control.FR_NUM DO // check connection to server cTCP_RTU[i].xEnable := FALSE; // reconnect need in next cycle bMBFault[i] := TRUE; tonClientTCP(IN := TON_recon, PT := T_CL_RST); FOR i := 1 TO Freq_Control.FR_NUM DO cTCP_RTU[i](); cTCP_RTU[i].xEnable := FALSE; // reconnect need in next cycle bMBFault[i] := TRUE; (*IF wErrCount[i] < MB_CRASH THEN wErrCount[i] := wErrCount[i] + 1; ELSIF wErrCount[i] >= MB_CRASH THEN bMBFault[i] := TRUE; END_IF*) END_IF ELSE wErrCount[i] := 0; bMBFault[i] := FALSE; ELSE // not execute IF eReqState[i] = FIRST_REQ THEN eReqState[i] := INPUTS_REQ; pI^.ReadInputs(); CONTINUE; ELSIF eReqState[i] = INPUTS_REQ THEN bTemp[i] := pI^.IsRemote(); IF bTemp[i] <> bRemote[i] THEN eReqState[i] := REMOTE_SET; pI^.SetRemote(bTemp[i]); CONTINUE; ELSE eReqState[i] := STATUS_REQ; ELSIF eReqState[i] = REMOTE_SET THEN eReqState[i] := REMOTE_SETF; pI^.SetRemoteF(bTemp[i]); ELSIF eReqState[i] = REMOTE_SETF THEN eReqState[i] := STATUS_REQ; bRemote[i] := bTemp[i]; ELSIF eReqState[i] = STATUS_REQ THEN eReqState[i] := ERROR_REQ; pI^.ReadStatus(); ELSIF eReqState[i] = ERROR_REQ THEN pI^.CheckStart(); IF pI^.GetError() <> NO_ERROR THEN bFreqFault[i] := TRUE; eReqState[i] := RESET_REQ; pI^.ResetDriver(); bFreqFault[i] := FALSE; eReqState[i] := FREQ_GET_REQ; pI^.ReadFreqRef(); ELSIF eReqState[i] = RESET_REQ THEN eReqState[i] := FIRST_REQ; ELSIF eReqState[i] = FREQ_GET_REQ THEN eReqState[i] := FREQ_SET_REQ; pI^.ReadFreqAct(); ELSIF eReqState[i] = FREQ_SET_REQ THEN wFreqAct[i] := pI^.GetFreqAct(); wFreqRef[i] := pI^.GetFreqRef(); eReqState[i] := CONTROL_REQ; ELSIF eReqState[i] = CONTROL_REQ THEN IF i = u THEN // active PUMP group IF pI^.StopRotation(NOT bStartKey[i]) OR pI^.StartRotation(bStartKey[i]) OR pI^.SetFreq(wFreqNew[i]) THEN wUserID := DWORD_TO_WORD(VisuElems.CurrentUserGroupId); eReqState[i] := STATUS_REQ; CONTINUE; ELSE eReqState[i] := FIRST_REQ; END_IF IF bEnable[i] AND Ifdrv[i].IsConnected() THEN Ifdrv[i].NetRefresh();~ |